home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 351-375 / disk_351 / pdc / libsrc.lzh / LibSrc / Math / sinh.c < prev    next >
C/C++ Source or Header  |  1990-04-07  |  645b  |  36 lines

  1. #include <stdio.h>
  2. #include <math.h>
  3. #include "pml.h"
  4. #include "cordic.h"
  5.  
  6. static char     funcname[] = "sinh";
  7.  
  8. extern CORDIC_Table CORDIC_Table1[1];
  9.  
  10. double
  11. sinh(x)
  12.     double          x;
  13. {
  14.     int             Q;
  15.     double          x0, y0, z0;
  16.     double          D, t, temp, value;
  17.     struct exception xcpt;
  18.  
  19.     t = x / LN2;
  20.     D = modf(t, &temp);
  21.     Q = temp;
  22.  
  23.     x0 = 1.0;
  24.     y0 = 0.0;
  25.     z0 = D * LN2;
  26.  
  27.     CORDIC_rotate1(1, CORDIC_Table1, &x0, &y0, &z0);
  28.  
  29.     x0 /= CORDIC_Table1->kval;  /* cosh(D)   */
  30.     y0 /= CORDIC_Table1->kval;  /* sinh(D)   */
  31.  
  32.     z0 = ldexp(x0 + y0 - ldexp(x0 - y0, -2 * Q), Q - 1);
  33.  
  34.     return (z0);
  35. }
  36.